using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Gratamira.AccesoDato;

namespace Gratamira.CapaNegocio
{
    public class Tercero
    {
        #region Atributos
        private long _TerceroID;
        private string _Nombre;
        private string _NombreLargo;
        private long _Telefono;
        private string _Direccion;
        private int _PaisID;
        private string _Email;
        private string _Observacion;
        private string _Contacto;
        private string _UsuarioCreacion;
        private string _FechaCreacion;
        private string _UsuarioModificacion;
        private string _FechaModificacion;
        private bool _Modificada;
        #endregion

   
        #region Propiedades        
        
        public long TerceroID
        {
            get
            {
                return _TerceroID;
            }
            set
            {
                _TerceroID = value;
            }
        }

        public string Nombre
        {
            get
            {
                return _Nombre;
            }
            set
            {
                if (_Nombre != value)
                {
                    Modificada = true;
                }
                _Nombre = value;
            }
        }

        public string NombreLargo
        {
            get
            {
                return _NombreLargo;
            }
            set
            {
                if (_NombreLargo != value)
                {
                    Modificada = true;
                }
                _NombreLargo = value;
            }
        }

         public int PaisID
        {
            get
            {
                return _PaisID;
            }
            set
            {
                if (_PaisID != value)
                {
                    Modificada = true;
                }
                _PaisID = value;
            }
        }

        public long Telefono
        {
            get
            {
                return _Telefono;
            }
            set
            {
                if (_Telefono != value)
                {
                    Modificada = true;
                }
                _Telefono = value;
            }
        }   
    
        public string Contacto
        {
            get
            {
                return _Contacto;
            }
            set
            {
                if (_Contacto != value)
                {
                    Modificada = true;
                }
                _Contacto = value;
            }
        }

        public string Email
        {
            get
            {
                return _Email;
            }
            set
            {
                if (_Email != value)
                {
                    Modificada = true;
                }
                _Email = value;
            }
        }
 
        public string Direccion
        {
            get
            {
                return _Direccion;
            }
            set
            {
                if (_Direccion != value)
                {
                    Modificada = true;
                }
                _Direccion = value;
            }
        }


        public string Observacion
        {
            get
            {
                return _Observacion;
            }
            set
            {
                if (_Observacion != value)
                {
                    Modificada = true;
                }
                _Observacion = value;
            }
        }

            public string UsuarioCreacion
        {
            get
            {
                return _UsuarioCreacion.Trim();
            }
            set
            {
                _UsuarioCreacion = value;
            }
        }

        public string UsuarioModificacion
        {
            get
            {
                return _UsuarioModificacion.Trim();
            }
            set
            {
                _UsuarioModificacion = value;
            }
        }

        public string FechaCreacion
        {
            get
            {
                return _FechaCreacion;
            }
            set
            {
                _FechaCreacion = value;
            }
        }

        public string FechaModificacion
        {
            get
            {
                return _FechaModificacion;
            }
            set
            {
                _FechaModificacion = value;
            }
        }

        public bool Modificada
        {
            get
            {
                return _Modificada;
            }
            set
            {
                _Modificada = value;
            }
        }

        #endregion

        #region Constructores
        public Tercero()
        {

        }

        public Tercero(long terceroID_p)
        {
            TerceroID = terceroID_p;
            leerTercero();
        }

        public Tercero(DataSet dsDatos)
        {
            try
            {
                //Crear instancia a componente de datos
                accesoDatos p = new accesoDatos();

                //Crear DataTable de Bodegas y adicionarlo al DataSet de la clase
                string tSql = "SELECT Nombre, TerceroID, Telefono, PaisID, Email, Contacto " +
                                "FROM Tercero " +
                                "WHERE 'A' = 'B' ";
                DataTable dtDatos = new DataTable();
                dtDatos = p.leerDatosSQL(tSql, "Gratamira");
                dtDatos.TableName = "Tercero";
                dsDatos.Tables.Add(dtDatos);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Metodos

        public void actualizarTercero()
        {
            accesoDatos p = new accesoDatos();
            string tSql = "UPDATE Tercero SET  Nombre = '" + Nombre + "'" +
                          ", NombreLargo = '" + NombreLargo + "'" +
                          ", PaisID = " + PaisID +
                          ", Telefono = " + Telefono +
                          ", Email = '" + Email + "'" +
                          ", Contacto = '" + Contacto + "'" +
                          ", Direccion = '" + Direccion + "'" +
                          ", Observaciones = '" + Observacion + "'" +
                          ", UsuUltMod = '" + UsuarioModificacion + "'" +
                          ", FecUltMod = getdate()";
            //tSql = (Email != "") ? tSql + ", Email = NULL" : tSql + ", Email = '" + Email + "'";
            tSql += "  WHERE TerceroID = " + TerceroID;
            p.ejecutarSQL(tSql, "Gratamira");
            Modificada = false;
            FechaModificacion = System.DateTime.Now.ToString();
        }

        public void leerTercero()
        {
            DataRow fila;
            string strSql = "SELECT * FROM Tercero  WHERE TerceroID = " + TerceroID ;
            DataTable dt = new DataTable();
            accesoDatos p = new accesoDatos();
            dt = p.leerDatosSQL(strSql, "Gratamira");

            if (p.regAfectados > 0)
            {
                fila = dt.Rows[0];
                Nombre = fila["Nombre"].ToString();
                NombreLargo = fila["NombreLargo"].ToString();
                PaisID = Convert.ToInt32(fila["PaisID"]);
                Telefono = Convert.ToInt64(fila["Telefono"]);
                Contacto = fila["Contacto"].ToString();
                Email = fila["Email"].ToString();
                Direccion = fila["Direccion"].ToString();
                Observacion = fila["Observaciones"].ToString();
                UsuarioCreacion = fila["CodUsuCre"].ToString();
                UsuarioModificacion = fila["UsuUltMod"].ToString();
                FechaCreacion = fila["FecHorCre"].ToString();
                FechaModificacion = fila["FecUltMod"].ToString();
                Modificada = false;
            }
        }

        public DataTable leerTercero(string valor, int tipo)
        {
            string tSql = "SELECT Nombre, TerceroID, Telefono, PaisID, Email, Contacto " +
                          "FROM Tercero ";
            switch (tipo)
            {
                case 0:
                    tSql += "WHERE Nombre like '%" + valor + "%' ";
                    break;
                case 1:
                    tSql += "WHERE TerceroID =" + valor;
                    break;
            }
            tSql += "ORDER BY Nombre";
            DataTable dt = new DataTable();
            accesoDatos p = new accesoDatos();
            dt = p.leerDatosSQL(tSql, "Gratamira");
            Modificada = false;
            return dt;
        }

        public void leerTercero(string valor, int tipo, DataSet dsDatos)
        {
            string tSql = "SELECT Nombre, TerceroID, Telefono, PaisID, Email, Contacto " +
                          "FROM Tercero ";
            switch (tipo)
            {
                case 0:
                    tSql += "WHERE Nombre like '%" + valor + "%' ";
                    break;
                case 1:
                    tSql += "WHERE TerceroID  = " + valor;
                    break;
            }
            tSql += "ORDER BY TerceroID";
            DataTable dt = new DataTable();
            accesoDatos p = new accesoDatos();
            dt = p.leerDatosSQL(tSql, "Gratamira");
            dsDatos.Clear();
            foreach (DataRow tFila in dt.Rows)
            {
                DataRow nFila = dsDatos.Tables["Tercero"].NewRow();
                nFila.ItemArray = tFila.ItemArray;
                dsDatos.Tables["Tercero"].Rows.Add(nFila);
            }
        }

        public void eliminarTercero(long pTerceroID)
        {
            accesoDatos p = new accesoDatos();
            p.ejecutarSQL("DELETE FROM Tercero WHERE TerceroID = " + pTerceroID, "Gratamira");
        }


        public bool insertarTercero()
        {
            accesoDatos p = new accesoDatos();
            string tSql = "INSERT INTO Tercero " +
                            "(TerceroID, Nombre, NombreLargo, PaisID, Telefono, " +
                            "Contacto, Email, Direccion, Observaciones, " +
                            "CodUsuCre, FecHorCre, UsuUltMod, FecUltMod) VALUES ";

            //Email = (Email != "") ? "'" + Email + "'" : "NULL";

            tSql += "  (" + TerceroID + ",'" + Nombre + "','" + NombreLargo + "'," + PaisID + "," + Telefono;
            tSql += ",'" + Contacto + "','" + Email + "','" + Direccion + "','" + Observacion + "'";
            tSql += ",'" + UsuarioCreacion + "',getdate(),'" + UsuarioModificacion + "',getdate())";

            p.ejecutarSQL(tSql, "Gratamira");
            Modificada = false;
            return true;
        }
        #endregion
    }
}
